#include "fsl_common.h"
#include "fsl_debug_console.h"

#include "fsl_gpio.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"

#define ILI9806E_PORT GPIO1

#define ILI9806E_SPI_CS  02
#define ILI9806E_SPI_SCK 03
#define ILI9806E_SPI_SDO 19
#define ILI9806E_SPI_SDI 18
void SoftSpiGpioInit(void);
void SckSetValue(bool value);
void MosiSetValue(bool value);
bool MisoGetValue(void);
void NssSetValue(bool value);

void Init_ILI9806E_SPI_Pin(void)
{
     gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
     GPIO_PinInit(ILI9806E_PORT, ILI9806E_SPI_SCK, &led_config);
     GPIO_PinInit(ILI9806E_PORT, ILI9806E_SPI_CS, &led_config);
     GPIO_PinInit(ILI9806E_PORT, ILI9806E_SPI_SDI, &led_config);
     
     led_config.direction = kGPIO_DigitalInput;
     GPIO_PinInit(ILI9806E_PORT, ILI9806E_SPI_SDO, &led_config);
}

void SoftSpiGpioInit(void)
{
     Init_ILI9806E_SPI_Pin();
}

void SckSetValue(bool value)
{
     GPIO_PinWrite(ILI9806E_PORT,ILI9806E_SPI_SCK,value);
}

void MosiSetValue(bool value)
{
     GPIO_PinWrite(ILI9806E_PORT,ILI9806E_SPI_SDI,value);
}

void NssSetValue(bool value)
{
     GPIO_PinWrite(ILI9806E_PORT,ILI9806E_SPI_CS,value);
}

bool MisoGetValue(void)
{
     if(GPIO_PinRead(ILI9806E_PORT, ILI9806E_SPI_SDO) == 0)
     {
            return 0;
     }else{
            return 1;
     }
}

